# -*- coding: UTF-8 -*-

import  pymysql

"""
@author: 肥仔编程
@file:12.py
@time:2021-04-22
"""

"""
    数据库操作流程
        第一步，在代码中使用 Import 将 pymysql 导入
        第二步，调用方法创建数据库连接
        第三步，创建游标对象
        第四步，执行数据处理方法
        第五步，关闭游标对象
        第六步，关闭数据库连接
    特别说明，Python 中事务默认不会自动进行提交，需要手动设置提交，不然对数据库的更新操作是无效的
"""

# 数据库添加测试
def addDept():
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset="UTF8")

    stast = conn.cursor()

    addSQL = "INSERT INTO dept (deptno, dname, loc) VALUES (%s, %s,%s)"
    deptInf0 = ('50', '测试', '201')
    stast.execute(addSQL, deptInf0)

    conn.commit()
    print("添加部门信息成功")

    stast.close()

    conn.close()

# 修改数据测试
def updDept():
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset="UTF8")

    stast = conn.cursor()

    updSQL = "UPDATE dept SET dname = %s, loc = %s WHERE deptno = %s"
    deptInf0 = ('测试部', '202', '50')
    stast.execute(updSQL, deptInf0)

    conn.commit()

    print("修改部门信息成功")

    stast.close()

    conn.close()

# 删除数据测试
def delDept():
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset="UTF8")

    stast = conn.cursor()

    updSQL = "DELETE FROM dept WHERE deptno = %s"
    stast.execute(updSQL, 50)

    conn.commit()

    print("删除部门信息成功")

    stast.close()

    conn.close()

# 依据ID 获取指定编号的部门信息
# 查询的操作在执行完SQL语句之后，需要使用 fetchone 获取查询中的数据
def qryDeptById():
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset="UTF8")

    stast = conn.cursor()

    qrySQL = "SELECT deptno, dname, loc FROM dept WHERE deptno = %s"
    stast.execute(qrySQL, 40)

    print(stast.fetchone())

    stast.close()

    conn.close()

# 查询获取全部的部门信息
# 注意，fetchone 仅打印一条，但是当查询出多条记录的时候也不会报错
def qryDepts():
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="test", charset="UTF8")

    stast = conn.cursor()

    qrySQL = "SELECT deptno, dname, loc FROM dept"
    stast.execute(qrySQL)

    print(stast.fetchall())

    stast.close()

    conn.close()

# addDept()

# updDept()

# delDept()

# qryDeptById()

qryDepts()